function TreeSelector(selector) {
	// дом элементы
	this.all_checkbox = jQuery(selector).find(".first-").children("input");
	this.checkboxes = jQuery(selector).find(".fieldbox-").filter(":not(.first-)").children('input');
	
	this.all_checkbox_clicked = function() {
		if (jQuery(this.all_checkbox).attr("checked")) {
			// поставить все под-чекбоксы если оно ставит галку
			this.setChecked();
		} else {
			// снять все под-чекбоксы если снимает галку 
			this.setUnChecked();
		}
	}
	
	this.setChecked = function() {
		for (i=0; i<this.checkboxes.length; i++) {
			jQuery(this.checkboxes[i]).attr("checked", "checked");
		}
	}
	
	this.setUnChecked = function() {
		for (i=0; i<this.checkboxes.length; i++) {
			jQuery(this.checkboxes[i]).removeAttr("checked");
		}			
	}
	
	this.changeSelectionState = function(dom_elt) {
		
		var is_all_checked = true;
		for (i=0; i<this.checkboxes.length; i++) {
			if ( !jQuery(this.checkboxes[i]).attr("checked") ) { is_all_checked = false; break; }
		}
		
		if (is_all_checked) jQuery(this.all_checkbox).attr("checked", "checked"); else
		jQuery(this.all_checkbox).removeAttr("checked");
		
	}
	
	var bindEvents = function(obj) {
		jQuery(obj.all_checkbox).bind("click", function(event) {
			obj.all_checkbox_clicked();
		});
		jQuery(obj.checkboxes).bind("click", function(event) {			
			obj.changeSelectionState(this);
		});
	}
	bindEvents(this);
}

jQuery().ready(function() {
	jQuery().find('.wg-doctypes-menu').each(function(i, dom){
	    new TreeSelector(dom);
	});
});

